Telegram Group & Telegram Channel
Forwarded from Golang
πŸ‘£ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ выдСлСния памяти Π² Go: ΠΊΠ°ΠΊ ΠΎΠ΄Π½Π° строчка Π·Π°ΠΌΠ΅Π΄Π»ΠΈΠ»Π° всё Π½Π° 30%

Π’ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Dolt (Π°Π½Π°Π»ΠΎΠ³ Git, Π½ΠΎ для SQL-Ρ‚Π°Π±Π»ΠΈΡ†) послС Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² (types_scan) Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ стал Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° 30% ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°? Казалось Π±Ρ‹, нСвинная строчка ΠΊΠΎΠ΄Π°.

πŸ“‰ Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ
ΠœΠ΅Ρ‚ΠΎΠ΄ GetBytes() Π½Π°Ρ‡Π°Π» Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ReadBytes() Ρƒ интСрфСйса ValueStore. Всё выглядСло Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Go ΠΈ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ ΡΡ‚Ρ€Π°Π½Π½ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ:
πŸ” runtime.newobject вызывался слишком часто β†’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄Π΅Π»Π°Π»Π° ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΈΡˆΠ½ΠΈΡ… Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΉ Π² ΠΊΡƒΡ‡Π΅.

πŸ“¦ Π“Π΄Π΅ Π·Π°Ρ€Ρ‹Ρ‚Π° собака

func (vs nodeStore) ReadBytes(...) ...

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ использовал ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ (vs nodeStore). Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ вся структура ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½Π° большая.

πŸš‘ Как пофиксили
ΠŸΡ€ΠΎΡΡ‚ΠΎ помСняли Π½Π° ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ:

func (vs *nodeStore) ReadBytes(...) ...

Вуаля β€” Π°Π»Π»ΠΎΠΊΠ΅ΠΉΡˆΠ½Ρ‹ исчСзли, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ.

🧠 Π’Ρ‹Π²ΠΎΠ΄
❗ ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠΎΠΌ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ = риск лишнСго копирования ΠΈ Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΉ
πŸ›  Π”Π°ΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ малСнький ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π·ΠΊΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ ваш ΠΊΠΎΠ΄
πŸ” ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° Π² Go β€” ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ pprof!

ΠŸΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΎΡ€ Π² Π±Π»ΠΎΠ³Π΅ DoltHub
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎ Dolt

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/sqlhub/1848
Create:
Last Update:

πŸ‘£ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ выдСлСния памяти Π² Go: ΠΊΠ°ΠΊ ΠΎΠ΄Π½Π° строчка Π·Π°ΠΌΠ΅Π΄Π»ΠΈΠ»Π° всё Π½Π° 30%

Π’ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Dolt (Π°Π½Π°Π»ΠΎΠ³ Git, Π½ΠΎ для SQL-Ρ‚Π°Π±Π»ΠΈΡ†) послС Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² (types_scan) Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ стал Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° 30% ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°? Казалось Π±Ρ‹, нСвинная строчка ΠΊΠΎΠ΄Π°.

πŸ“‰ Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ
ΠœΠ΅Ρ‚ΠΎΠ΄ GetBytes() Π½Π°Ρ‡Π°Π» Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ReadBytes() Ρƒ интСрфСйса ValueStore. Всё выглядСло Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Go ΠΈ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ ΡΡ‚Ρ€Π°Π½Π½ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ:
πŸ” runtime.newobject вызывался слишком часто β†’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄Π΅Π»Π°Π»Π° ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΈΡˆΠ½ΠΈΡ… Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΉ Π² ΠΊΡƒΡ‡Π΅.

πŸ“¦ Π“Π΄Π΅ Π·Π°Ρ€Ρ‹Ρ‚Π° собака


func (vs nodeStore) ReadBytes(...) ...

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ использовал ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ (vs nodeStore). Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ вся структура ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½Π° большая.

πŸš‘ Как пофиксили
ΠŸΡ€ΠΎΡΡ‚ΠΎ помСняли Π½Π° ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ:

func (vs *nodeStore) ReadBytes(...) ...

Вуаля β€” Π°Π»Π»ΠΎΠΊΠ΅ΠΉΡˆΠ½Ρ‹ исчСзли, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ.

🧠 Π’Ρ‹Π²ΠΎΠ΄
❗ ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠΎΠΌ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ = риск лишнСго копирования ΠΈ Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΉ
πŸ›  Π”Π°ΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ малСнький ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π·ΠΊΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ ваш ΠΊΠΎΠ΄
πŸ” ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° Π² Go β€” ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ pprof!

ΠŸΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΎΡ€ Π² Π±Π»ΠΎΠ³Π΅ DoltHub
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎ Dolt

@golang_google

BY Data Science. SQL hub




Share with your friend now:
tg-me.com/sqlhub/1848

View MORE
Open in Telegram


Data Science SQL hub Telegram | DID YOU KNOW?

Date: |

The Singapore stock market has alternated between positive and negative finishes through the last five trading days since the end of the two-day winning streak in which it had added more than a dozen points or 0.4 percent. The Straits Times Index now sits just above the 3,060-point plateau and it's likely to see a narrow trading range on Monday.

What Is Bitcoin?

Bitcoin is a decentralized digital currency that you can buy, sell and exchange directly, without an intermediary like a bank. Bitcoin’s creator, Satoshi Nakamoto, originally described the need for β€œan electronic payment system based on cryptographic proof instead of trust.” Each and every Bitcoin transaction that’s ever been made exists on a public ledger accessible to everyone, making transactions hard to reverse and difficult to fake. That’s by design: Core to their decentralized nature, Bitcoins aren’t backed by the government or any issuing institution, and there’s nothing to guarantee their value besides the proof baked in the heart of the system. β€œThe reason why it’s worth money is simply because we, as people, decided it has valueβ€”same as gold,” says Anton Mozgovoy, co-founder & CEO of digital financial service company Holyheld.

Data Science SQL hub from us


Telegram Data Science. SQL hub
FROM USA